<?php

namespace app\admin\controller;

use app\admin\model\AdminRole;
use app\admin\model\RoleNode;
use think\Controller;
use think\Db;
use think\Loader;
use think\Request;
use app\admin\model\Node as nodeModel;

//as  取别名

class Node extends Base
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //查询父级权限
        $parentNode = nodeModel::getParentNodeAll();
        //赋值
        $this->assign('node', $parentNode);
        return view();
    }

    /**
     * 保存新建的资源
     *
     * @param \think\Request $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //接收参数
        $params = $request->post();
        //验证参数
        $validate = Loader::validate('Node');
        if (!$validate->scene('add')->check($params)) {
            return getJsonData(100010, $validate->getError());
        }

        // 启动事务
        Db::startTrans();
        try {
            //捕捉异常
            //数据库操作 --添加权限
            $addData = [
                'node_name' => $params['node_name'],
                'node_action' => $params['node_action'],
                'node_controller' => $params['node_controller'],
                'order' => $params['order'],
                'is_menu' => $params['menu'],
                'pid' => $params['pid']
            ];
            //添加权限
            $node = nodeModel::addNode($addData); //新增后的结果

            //处理权限和角色关系表
            //1. 查询当前登录用户的id
            $userInfo = session('userInfo');
            $userId = $userInfo['id'];
            //2. 根据当前用户id查询对应的角色id
            $role = AdminRole::getRoleId($userId);
            //3. 新增权限和角色 关系
            $add = [
                'rid' => $role['rid'],
                'nid' => $node['id'],
            ];

            //新增权限和角色
            $result = RoleNode::addRoleNode($add);
            // 提交事务
            Db::commit();
            return getJsonData(200, '添加成功', $node);
        } catch (\Exception $e) {
            // 回滚事务
            Db::rollback();

//            return getJsonData(10011, $e->getMessage());
            return getJsonData(10011, '添加失败');
        }


    }

    /**
     * 显示指定的资源
     *
     * @param int $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param int $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param \think\Request $request
     * @param int $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param int $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }
}
